Privateサブネットに構築した踏み台経由でDBクライアントツールからRDSに接続してみた(SSMリモートポートフォーワーディング編)
こんにちは。AWS事業本部トクヤマシュンです。
以前、SSHトンネルを利用して、DBクライアントツールからPrivateサブネットに構築した踏み台経由でRDSに接続するエントリを投稿しました。
少し前のアップデートで、SSMリモートポートフォワーディングを使ってPrivateサブネットに構築した踏み台経由でRDSに接続することも可能になりました。
今回はこちらを使ってDBクライアントツールからRDSに接続してみます。
何が嬉しいのか?
SSHトンネルではなくSSMリモートポートフォワーディングを使って接続する利点で一番大きいのは、踏み台EC2サーバのSSH鍵管理をなくせることだと思います。
認証・認可をIAMですべて完結することができるため、踏み台EC2サーバ作成時に鍵を作成し、管理する必要がなくなります。
構成
Session Managerを使って、クライアントマシンとPrivateサブネットのEC2踏み台ホストに接続します。
EC2踏み台ホストでリモートポストへのポートフォワーディングを行って、RDSにアクセスします。
DBクライアントツールは前回と同様MySQL Workbench
、Sequel Ace
、DBeaver
の3つを試します。
検証は次のバージョンを使います。
- クライアントマシン
- OS
- macOS Big Sur Version 11.6.5
- aws-cli
- 2.7.15
- Session Managerプラグイン
- 1.2.331.0
- DBクライアント
- MySQL Workbench Version 8.0.30
- Sequel Ace Version 3.5.2
- DBeaver Version 22.1.3.202207240747
- OS
- Amazon EC2 AMI
- amzn2-ami-hvm-2.0.20220606.1-arm64-gp2
- Amazon RDS
- Aurora MySQL Version 2.10.2
RDSの設定
セキュリティグループの設定
EC2踏み台ホストからアクセスできるように、RDSのセキュリテイグループのインバウンドルールに、EC2踏み台ホストのセキュリティグループからのTCP/3306ポートのアクセスを追加します。
EC2の設定
IAMロールの設定
EC2踏み台ホストをAWS Systems Managerのマネージドインスタンスとするため、
IAMロールにAmazonSSMManagedInstanceCore
を割り当てます。
なお、リモートホストへのポートフォワーディングを利用するにはバージョン3.1.1374.0
以上のSSMエージェントがインストールされていることが必要です。
今回適用したのは現時点で最新版のAmazon Linux2 AMIでしたが、インストールされていたSSMエージェントのバージョンが低かったので、
下記ブログを参考にSSMエージェントのバージョンを最新のものにアップデートしました。
セキュリティグループの設定
Session Managerを使ってEC2にSSHアクセスするため、EC2セキュリティグループのインバウンドルールは無くても構いません。
ネットワークの設定
今回はVPCエンドポイントを作成し、インターネット接続のないPrivate SubnetからAWS Systems Managerと通信します。
未設定の場合は、こちらの手順にしたがってVPCエンドポイントを作成してください。
クライアントマシンの設定
Macを使用した際の設定を示します。
AWS CLIの設定は完了しているものとします。
Session Managerプラグイン インストール
AWS CLIを使ってAWS Systems Managerのマネージドインスタンスにアクセスするには、
Session Managerプラグインをインストールする必要があります。
手順を参考にインストールします。
SSMリモートポートフォワーディング開始
下記コマンドによって、SSMリモートポートフォワーディングを開始します。
今回は、ローカルホストの3306
ポートをRDSの3306
ポートに転送するよう設定しています。
aws ssm start-session \ --target i-EC2踏み台ホストのインスタンスID \ --document-name AWS-StartPortForwardingSessionToRemoteHost \ --parameters '{"host":["RDSのエンドポイント"],"portNumber":["3306"], "localPortNumber":["3306"]}'
コマンドをバックグラウンドで実行したい場合は、末尾に&をつけてください。
以上でクライアントマシンの設定も完了です。
DBクライアントツールの設定
DBクライアントツールからPrivateサブネットのRDSに接続します。
次の通り設定することで、RDSに接続できました。
MySQL Workbench
Sequel Ace
DBeaver
DBクライアントの設定は、前回のトンネル接続の時とまったく同じでOKでした。
趣味のスパイスカレー
私の趣味はスパイスカレー作りで、ブログに投稿していってます。
AWSには全然関係ありませんが、お付き合いいただけますと幸いです。
- 豆豉豚キーマ
- スリランカチキンカレー
- ナスのモージュ
- レンズ豆のココナッツミルクダル
中華風✖︎スリランカ風のあいがけです。
一皿で違う国にトリップしたような、満足感の高いプレートでした!
コロナ禍前は色んな国に旅行してましたが、最近はめっきり行けてないので、旅人に優しい世界が戻ってくることを切に願います。
最後に
DBクライアントツールからSSMリモートポートフォワーディングを使って、Privateサブネットに構築した踏み台経由でRDSに接続しました。
SSHトンネルでと同様に接続ができ、鍵管理を無くすことが可能なので、基本的にはこちらをオススメします。
本エントリがどなたかのお役に立てば幸いです。